import random

# #初始
# list1 = [1, 2, 3, 4, 5]
# list1.append(6)
# list1.remove(3)
# list1[1] = 8
#
# print(list1.index(8))
#
# for num in list1:
#     print(num, end='\t')
# print()
#
# for num in range(7,10):
#     list1.append(num)
# print(list1)
#
# list1.extend([10,11,12])
# print(list1)
#
# print(list1[2:5])
#
# for num in range(14,12,-1):
#     list1.insert(2,num)
# print(list1)

# #进阶
# my_list = [3, "apple", 9, "banana", 7, "cherry", 2, "date", 5, "elderberry"]
#
# #1.向my_list中添加一个元素"fig"
# my_list.append('fig')
# print(my_list)
#
# #2.从my_list中删除元素"banana"
# my_list.remove('banana')
# print(my_list)
#
# #3.将元素7修改为字符串"grape"
# my_list[my_list.index(7)] = 'grape'
# print(my_list)
#
# #4.查找并打印元素"cherry"的索引值
# print(my_list.index('cherry'))
#
# #5.遍历my_list并打印每个元素
# for num in my_list:
#     print(num, end='\t')
# print()
#
# #6.在"cherry"后面插入新元素"kiwi"
# my_list.insert(my_list.index("cherry") + 1, 'kiwi')
# print(my_list)
#
# #7.使用索引查找并打印第三个元素
# print(my_list[2])
#
# #8.使用负数索引找到并打印倒数第二个元素
# print(my_list[-2:-3:-1])
#
# #9.使用切片操作获取第三个至第七个元素并打印结果
# print(my_list[2:7])
#
# #10.使用切片操作反转整个列表并打印结果
# print(my_list[::-1])
#
# #11.列表中的字符串进行排序，并保留数字在原位
# """
# 思路：将原列表中的字符串类型元素和索引提取出来存入字典或两个列表中，
# 再对字典或列表中字符串排序，
# 再将排序好的字符串元素遍历到原列表中
# （开始要判断原列表中该位置是否为字符串）
# """
# #原列表
# print(my_list)
# my_list2 = []
# my_list3 = []
# i = 0
# j = 0
# #提取元素
# for num in my_list:
#     if type(num) == str:
#         my_list2.append(num)
#         my_list3.append(i)
#     i += 1
# #排序
# my_list2.sort()
# #填值
# for num in my_list2:
#     my_list[my_list3[j]] = num
#     j += 1
# #排序后列表
# print(my_list)
#
# #12.将my_list中的数字替换为它们对应的字符串形式(如1->'one')，不改变列表中原有的字符串
# """
# 从字典中提取数字对应的字符串填充到列表里
# """
# dictionary_1 = {1:"one", 2:"two", 3:"three", 4:"four", 5:"five",
#                 6:"six", 7:"seven", 8:"eight", 9:"nine", 0:"zero"}
# i = 0
# for num in my_list:
#     if type(num) == int:
#         my_list[i] = dictionary_1[num]
#     i += 1
#
# print(my_list)

#复杂
#1.创建一个列表包含1到100的所有偶数
list2 = [x for x in range(1,101) if x % 2 == 0]
print(list2)

#2.将上述列表中所有偶数替换为它们的平方
i = 0
for x in list2:
    list2[i] = x ** 2  #不能直接提取索引，新的数和后面的数相同会优先提取新数的索引
    i += 1
print(list2)

#3.从上述列表中删除所有大于1000的数字
i = len(list2) - 1
while i >= 0:
    if list2[i] > 1000:
        list2.pop(i)
    i -= 1
print(list2)

#4.将列表逆序
list2 = list2[ : :-1]
print(list2)

#5.使用切片操作取出列表中的前10个元素
print(list2[0:11])

#6.将一个新列表'[101, 102, 103]'加到现有列表的末尾
list2.extend([101, 102, 103])
print(list2)

#7.计算列表中元素的平均值
sum_1 = 0
for i in list2:
    sum_1 += i
avg = sum_1 / len(list2)
print(avg)

#8.找出列表中的最大值和最小值
max_1 = list2[0]
min_1 = list2[0]
for x in list2:
    if x > max_1:
        max_1 = x
    if x < min_1:
        min_1 = x
print(max_1, min_1)

#9.找出列表中第一次出现的11的索引位置
if 11 in list2:
    print(list2.index(11))
else:
    print("列表中没有11")

#10.用循环遍历列表，把每个数字替换为其对应的字符形式（例如：1替换为'1'）。注意使用不同类型的循环来实现
i = 0
while type(list2[len(list2)-1]) == int:
    for num in list2:
        list2[i] = str(num)
        i += 1
    break
print(list2)

#11.将列表中的所有元素转换成浮点数形式
i = 0
for num in list2:
    list2[i] = float(num)
    i += 1
print(list2)

#12.找出列表中所有大于50的元素个数
i = 0
for num in list2:
    if num > 50:
        i += 1
print(list2)
print(i)

#13.在列表的第三个位置插入数字99
list2.insert(2, 99)
print(list2)

#14.删除列表的最后一个元素
list2.pop(len(list2) - 1)
print(list2)

#15.使用列表推导式创建一个新列表，包含原列表中每个数字乘以2的结果
list3 = [x*2 for x in list2]
print(list3)

#16.将列表分成两部分，一部分是小于等于50的数，另一部分是大于50的数
#小于50部分元素所在列表
list4 = []
#大于50部分元素所在列表
list5 = []
for x in list2:
    if x <= 50:
        list4.append(x)
    else:
        list5.append(x)
print(list4)
print(list5)

#17.将列表转换为一个字典，其中列表元组作为键，其在列表中的索引为值
i = 0
dictionary_2 = {}
for x in list2:
    dictionary_2[i] = x
    i += 1
print(dictionary_2)

#18.使用enumerate函数遍历列表，并打印元素及索引
for index, value in enumerate(list2):
    print(value, index)

#19.从列表中随机取出一个元素
print(random.choice(list2))

#20.将列表保存到一个txt文件里，每个元素占一行
with open('list2.txt', 'w') as f:
    for x in list2:
        f.write(str(x) + '\n')





